package routes

import (
	"domain-system/handlers"
	"domain-system/services"
	"os"

	"github.com/gin-gonic/gin"
	"gorm.io/gorm"
)

// SetupAuthRoutes 设置认证相关路由
func SetupAuthRoutes(router *gin.Engine, db *gorm.DB, openIMService *services.OpenIMService) {
	// 获取JWT密钥
	jwtSecret := os.Getenv("JWT_SECRET")
	if jwtSecret == "" {
		jwtSecret = "your-default-secret-key" // 默认密钥，生产环境必须修改
	}

	authHandler := handlers.NewAuthHandler(db, jwtSecret, openIMService)

	// API v1 路由组
	v1 := router.Group("/api/v1")
	{
		// 认证相关路由（无需认证）
		auth := v1.Group("/auth")
		{
			auth.POST("/register", authHandler.Register)                           // 用户注册
			auth.POST("/login", authHandler.Login)                                 // 用户登录
			auth.POST("/register-email", authHandler.RegisterByEmail)              // 邮箱注册
			auth.POST("/send-code", authHandler.SendVerificationCode)              // 发送验证码
			auth.POST("/send-email-code", authHandler.SendEmailVerificationCode)   // 发送邮箱验证码
			auth.POST("/check-code", authHandler.CheckVerificationCode)            // 验证码检测
			auth.POST("/check-email-code", authHandler.CheckEmailVerificationCode) // 邮箱验证码检测
			auth.POST("/login-with-code", authHandler.LoginWithVerificationCode)   // 验证码登录
			auth.POST("/reset-password", authHandler.ResetPassword)                // 重置密码
		}

		// 用户相关路由（需要认证）
		user := v1.Group("/user")
		user.Use(authHandler.JWTMiddleware())
		{
			user.GET("/profile", authHandler.GetProfile)              // 获取用户资料
			user.POST("/logout", authHandler.Logout)                  // 用户注销
			user.DELETE("/deactivate", authHandler.DeactivateAccount) // 注销账户
		}
	}
}
